package classfile

/*
	常量池中 字段符号引用
*/
type ConstantFieldrefInfo struct {
	ConstantMemberrefInfo
}

/*
	常量池中 普通（非接口）方法符号引用
*/
type ConstantMethodrefInfo struct {
	ConstantMemberrefInfo
}

/*
	常量池中 接口方法符号引用
*/
type ConstantInterfaceMethodrefInfo struct {
	ConstantMemberrefInfo
}

type ConstantMemberrefInfo struct {
	cp               ConstantPool
	classIndex       uint16
	nameAndTypeIndex uint16
}

func (self *ConstantMemberrefInfo) readInfo(reader *ClassReader) {
	self.classIndex = reader.readUint16()
	self.nameAndTypeIndex = reader.readUint16()
}

func (self *ConstantMemberrefInfo) ClassName() string {
	return self.cp.getClassName(self.classIndex)
}

func (self *ConstantMemberrefInfo) NameAndDescriptor() (string, string) {
	return self.cp.getNameAndType(self.nameAndTypeIndex)
}
